package com.zte.shopping.mapper.product;

import com.zte.shopping.entity.Product;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Repository
public interface ProductMapper {


    /**
     * @Author zuti
     * @Description //TODO 查询所有产品列表
     * @Date 17:10 2020/6/28
     * @Param [from, pageSize]
     * @return java.util.List<com.zte.shopping.entity.Product>
     **/
    List<Product> productList(@Param("from") int from, @Param("pageSize") int pageSize);

    /**
     * @Author zuti
     * @Description //TODO 查询所有产品数量
     * @Date 17:22 2020/6/28
     * @Param []
     * @return int
     **/
    int productListCount();


    /**
     * @Author zuti
     * @Description //TODO 根据Id查询商品信息，为更新做准备
     * @Date 15:13 2020/6/30
     * @Param [parseInt]
     * @return com.zte.shopping.entity.Product
     **/
    Product selectById(@Param("id") int parseInt);

    /**
     * @Author zuti
     * @Description //TODO 更新商品列表
     * @Date 15:14 2020/6/30
     * @Param [product]
     * @return void
     **/
    void updateProduct(Product product);

    /**
     * @Author zuti
     * @Description //TODO 根据   Id删除商品
     * @Date 15:14 2020/6/30
     * @Param [parseInt]
     * @return void
     **/
    void deleteById(@Param("id") int parseInt);

    /**
     * @Author zuti
     * @Description //TODO 插入新的商品
     * @Date 15:15 2020/6/30
     * @Param [product]
     * @return void
     **/
    void insertProduct(Product product);

    /**
     * @Author zuti
     * @Description //TODO 根据查询条件商品分页查询
     * @Date 14:15 2020/6/30
     * @Param [minPrice, maxPrice, productTypeId, from, pageSize]
     * @return java.util.List<com.zte.shopping.entity.Product>
     **/
    List<Product> selectByParamList(@Param("minPrice")  Integer minPrice,
                                    @Param("maxPrice") Integer maxPrice,
                                    @Param("productTypeId") Integer productTypeId,
                                    @Param("status")Integer status,
                                    @Param("from") int from,
                                    @Param("pageSize") int pageSize);

    /**
     * @Author zuti
     * @Description //TODO 根据查询条件商品查询商品数量
     * @Date 15:15 2020/6/30
     * @Param [minPrice, maxPrice, productTypeId, status]
     * @return java.lang.Integer
     **/
    Integer selectCountByParamList(@Param("minPrice")  Integer minPrice,
                                   @Param("maxPrice") Integer maxPrice,
                                   @Param("productTypeId") Integer productTypeId,
                                   @Param("status")Integer status);
}
